なぜPiping ServerをRustで実装したいか?
何をしたいか?
Piping Serverは性質上、独自の計算などでCPUを使うような計算を行ったりはそれほどしない。そのためオリジナルのTypeScript版Piping Serverは単純にボディを.pipe()するだけで、これ以上の最適化の余地はあんまりなさそうと思った(.pipe()は裏ではC++とか高速な言語で実装されていそうだし)。
そこで、言語レベルでより高速な転送速度を実現することに決めた。
ガベージコレクション(GC)なしで安全に高速な実装が可能だから。Stop the Worldなどの問題もあり、GCのオーバヘッドは高いと思うし、機械にに優しい言語で書くことでもっと高速化できるのではないかと思った。Rustが安全に書くことを強く意識した言語であるということもC言語/C++を選ばない理由になる。 Go言語により最低限のPiping Server()が存在しているが、以前Node.jsとの転送速度を比較したときにそれほど変わらなかった。「安全に書く」という点でもRustはGoよりもその意識が非常に高く自分のスタイルにもあっているのもRustで書く理由。